/**
 * Copyright (C), -2025, www.bosssof.com.cn
 * @FileName HashSetDemo.java
 * @Author Administrator
 * @Date 2022-10-21  16:23
 * @Description对应结合框架作业 第2题
 * History:
 * <author> Administrator
 * <time> 2022-10-21  16:23
 * <version> 1.0.0
 * <desc> 版本描述
 */
package com.bosssoft.hr.train.j2se.example.collection;

import com.bosssoft.hr.train.j2se.example.pojo.User;
import lombok.extern.slf4j.Slf4j;

import java.util.*;

/**
 * @Class HashSetDemo
 * @Description
 * @Author Administrator
 * @Date 2022-10-21  16:23
 * @version 1.0.0
 */
@Slf4j
public class HashSetDemo extends BaseCollectionDemo {

    /**
     * 注意基于接口定义这样右边可以是map的任何实现类
     */
    private Set<User> userHashSet=new HashSet<>();
    /**
     * @Description: 对set中的用户进行遍历，其他几种遍历方式请执行查阅文章
     * @Author: Administrator
     * @DATE: 2022-10-21  16:14
     */
    public void visitByIterator() {
        //调用父类构造
        User[] users=generateData();
        for(User user: users){
            userHashSet.add(user);
        }
        /**
         * 构造的值是判断唯一的3个字段 这点请参考构造函数
         */
        User user=new User(
                new Long(1),
                String.format("BS%03d",1),
                "同学"+1
        );
        /**
         *  重复的对象在set中不存在，重复的依据依据hashcode和equal
         */
        userHashSet.add(user);
        log.info("用户数量%d",userHashSet.size());
        /**
         * set 另外一个特点就是无序性 所以通过迭代器输出没有下标可访问
         */
        Iterator<User>  userIterator=userHashSet.iterator();
        while (userIterator.hasNext()){
            log.info("当前用户:",userIterator.next());
        }
    }

}
